// var i;
// var $uI_OpenBox_UIBindings = require("./UI_OpenBox_UIBindings");
// var $uIView = require("./UIView");
// var $audioManager = require("./AudioManager");
// var $bundleConfig = require("./BundleConfig");
// var d = cc._decorator;
// var p = d.ccclass;
// var h = d.property;
// var f = d.inspector;
// var g = (function (e) {
//     function t() {
//         var t = (null !== e && e.apply(this, arguments)) || this;
//         t.auto_ui = null;
//         t.boxType = 0;
//         return t;
//     }
//     __extends(t, e);
//     t.prototype._show = function (e) {
//         var t = [];
//         for (var o = 1; o < arguments.length; o++) {
//             t[o - 1] = arguments[o];
//         }
//         this.clickCallBack = e.clickCallBack;
//         this.boxType = e.boxType;
//         this.auto_ui.txt_countLabel.string = e.boxCount + "";
//         this.auto_ui.dbAnim_box1.node.active = 0 == e.boxType;
//         this.auto_ui.dbAnim_box2.node.active = 1 == e.boxType;
//         if (1 == e.boxType) {
//             this.auto_ui.txt_titleLabel.string = "精致礼盒";
//             this.auto_ui.dbAnim_box2.playAnimation("daiji_1", 0);
//         } else {
//             this.auto_ui.txt_titleLabel.string = "普通礼盒";
//             this.auto_ui.dbAnim_box1.playAnimation("daiji_1", 0);
//         }
//         this.StartTween();
//     };
//     t.prototype._clickListener = function (e) {
//         switch (e) {
//             case this.auto_ui.btn_openBtn:
//                 this.onClick();
//         }
//     };
//     t.prototype.StartTween = function () {
//         var e = this;
//         this.auto_ui.btn_openBtn.node.active = !1;
//         this.auto_ui.node_boxNode.stopAllActions();
//         this.auto_ui.node_titileNode.stopAllActions();
//         this.auto_ui.node_titileNode.scaleX = 0;
//         this.auto_ui.node_lightNode.stopAllActions();
//         this.auto_ui.node_lightNode.scale = 0;
//         this.auto_ui.node_boxNode.y = 1e3;
//         this.auto_ui.node_boxNode.runAction(
//             cc.sequence(
//                 cc.moveTo(0.35, 0, 0),
//                 cc.scaleTo(0.05, 1, 0.8),
//                 cc.scaleTo(0.05, 1, 1),
//                 cc.callFunc(function () {
//                     e.auto_ui.node_lightNode.runAction(
//                         cc.sequence(
//                             cc.scaleTo(0.25, 1.1, 1.1),
//                             cc.scaleTo(0.05, 1, 1),
//                             cc.callFunc(function () {
//                                 e.auto_ui.node_lightNode.runAction(cc.repeatForever(cc.rotateBy(3, 360)));
//                                 e.auto_ui.btn_openBtn.node.active = !0;
//                             })
//                         )
//                     );
//                     e.auto_ui.node_titileNode.runAction(cc.scaleTo(0.25, 1, 1));
//                 })
//             )
//         );
//     };
//     t.prototype.onClick = function () {
//         var e = this;
//         this.auto_ui.btn_openBtn.node.active = !1;
//         $audioManager.AudioMgr.playEffect("sound/openBox", !1, $bundleConfig.BundleNames.Home);
//         if (0 == this.boxType) {
//             this.auto_ui.dbAnim_box1.playAnimation("kai", 0);
//         } else {
//             this.auto_ui.dbAnim_box2.playAnimation("kai", 0);
//         }
//         this.scheduleOnce(function () {
//             e.auto_ui.node_lightNode.stopAllActions();
//             if (e.clickCallBack) {
//                 e.clickCallBack();
//             }
//             e._close();
//         }, 1.1);
//     };
//     __decorate([h($uI_OpenBox_UIBindings.default)], t.prototype, "auto_ui", void 0);
//     return __decorate([p], t);
// })($uIView.default);
// exports.default = g;


// import UI_OpenBox_UIBindings from "./UI_OpenBox_UIBindings";
// import UIView from "./UIView";
// import {AudioMgr} from "./AudioManager";
// import {BundleNames} from "./BundleConfig";

// const { ccclass, property, inspector } = cc._decorator;

// /**
//  * 建议类名：OpenBoxComponent
//  * 一个游戏内打开礼盒的组件，处理礼盒的展示、动画和点击事件
//  */
// @ccclass
// class UI_OpenBox extends UIView {

//     /**
//      * 建议变量名：uiBindings
//      * 自动绑定的UI元素
//      */
//     @property(UI_OpenBox_UIBindings)
//     auto_ui: UI_OpenBox_UIBindings = null;

//     clickCallBack: () => void
//     /**
//      * 建议变量名：boxType
//      * 礼盒类型：0代表普通礼盒，1代表精致礼盒
//      */
//     boxType: number = 0;

//     /**
//      * 建议方法名：showBox
//      * 显示礼盒界面并初始化相关数据
//      * @param e 礼盒展示的数据，包括点击回调、礼盒类型、礼盒数量等
//      */
//     _show(e: { clickCallBack: () => void, boxType: number, boxCount: number }) {
//         const args = Array.prototype.slice.call(arguments, 1);
//         this.clickCallBack = e.clickCallBack;
//         this.boxType = e.boxType;
//         this.auto_ui.txt_countLabel.string = e.boxCount + "";
//         this.auto_ui.dbAnim_box1.node.active = (e.boxType === 0);
//         this.auto_ui.dbAnim_box2.node.active = (e.boxType === 1);

//         if (e.boxType === 1) {
//             this.auto_ui.txt_titleLabel.string = "精致礼盒";
//             this.auto_ui.dbAnim_box2.playAnimation("daiji_1", 0);
//         } else {
//             this.auto_ui.txt_titleLabel.string = "普通礼盒";
//             this.auto_ui.dbAnim_box1.playAnimation("daiji_1", 0);
//         }

//         this.StartTween();
//     }

//     /**
//      * 建议方法名：clickListener
//      * 点击事件监听器，根据不同的按钮执行不同的逻辑
//      * @param e 点击事件
//      */
//     _clickListener(e: cc.Button) {
//         switch (e) {
//             case this.auto_ui.btn_openBtn:
//                 this.onClick();
//                 break;
//         }
//     }

//     /**
//      * 建议方法名：startTween
//      * 启动礼盒动画
//      */
//     StartTween() {
//         this.auto_ui.btn_openBtn.node.active = false;
//         this.auto_ui.node_boxNode.stopAllActions();
//         this.auto_ui.node_titileNode.stopAllActions();
//         this.auto_ui.node_titileNode.scaleX = 0;
//         this.auto_ui.node_lightNode.stopAllActions();
//         this.auto_ui.node_lightNode.scale = 0;
//         this.auto_ui.node_boxNode.y = 1000;

//         this.auto_ui.node_boxNode.runAction(
//             cc.sequence(
//                 cc.moveTo(0.35, 0, 0),
//                 cc.scaleTo(0.05, 1, 0.8),
//                 cc.scaleTo(0.05, 1, 1),
//                 cc.callFunc(() => {
//                     this.auto_ui.node_lightNode.runAction(
//                         cc.sequence(
//                             cc.scaleTo(0.25, 1.1, 1.1),
//                             cc.scaleTo(0.05, 1, 1),
//                             cc.callFunc(() => {
//                                 this.auto_ui.node_lightNode.runAction(cc.repeatForever(cc.rotateBy(3, 360)));
//                                 this.auto_ui.btn_openBtn.node.active = true;
//                             })
//                         )
//                     );
//                     this.auto_ui.node_titileNode.runAction(cc.scaleTo(0.25, 1, 1));
//                 })
//             )
//         );
//     }

//     /**
//      * 建议方法名：handleClick
//      * 处理点击事件，当礼盒被点击时播放相关动画和执行回调
//      */
//     onClick() {
//         this.auto_ui.btn_openBtn.node.active = false;
//         AudioMgr.playEffect("sound/openBox", false, BundleNames.Home);

//         if (this.boxType === 0) {
//             this.auto_ui.dbAnim_box1.playAnimation("kai", 0);
//         } else {
//             this.auto_ui.dbAnim_box2.playAnimation("kai", 0);
//         }

//         this.scheduleOnce(() => {
//             this.auto_ui.node_lightNode.stopAllActions();
//             if (this.clickCallBack) {
//                 this.clickCallBack();
//             }
//             this._close();
//         }, 1.1);
//     }
// }

// export default UI_OpenBox;

import UIOpenBoxUIBindings from "./UI_OpenBox_UIBindings";
import UIViewBase from "./UIView";
import { AudioMgr } from "./AudioManager";
import { BundleNames } from "./BundleConfig";

const { ccclass, property, inspector } = cc._decorator;

/**
 * 建议类名：OpenBoxComponent
 * 一个游戏内打开礼盒的组件，处理礼盒的展示、动画和点击事件
 */
@ccclass
class ViewOpenBox extends UIViewBase {

    /**
     * 建议变量名：uiBindings
     * 自动绑定的UI元素
     */
    @property(UIOpenBoxUIBindings)
    auto_ui: UIOpenBoxUIBindings = null;

    clickCallBack: () => void;
    /**
     * 建议变量名：boxType
     * 礼盒类型：0代表普通礼盒，1代表精致礼盒
     */
    boxType: number = 0;

    /**
     * 建议方法名：showBox
     * 显示礼盒界面并初始化相关数据
     * @param e 礼盒展示的数据，包括点击回调、礼盒类型、礼盒数量等
     */
    _show(e: { clickCallBack: () => void, boxType: number, boxCount: number }) {
        const { clickCallBack, boxType, boxCount } = e;
        this.clickCallBack = clickCallBack;
        this.boxType = boxType;
        this.auto_ui.txt_countLabel.string = boxCount.toString();
        this.auto_ui.dbAnim_box1.node.active = (boxType === 0);
        this.auto_ui.dbAnim_box2.node.active = (boxType === 1);

        if (boxType === 1) {
            this.auto_ui.txt_titleLabel.string = "精致礼盒";
            this.auto_ui.dbAnim_box2.playAnimation("daiji_1", 0);
        } else {
            this.auto_ui.txt_titleLabel.string = "普通礼盒";
            this.auto_ui.dbAnim_box1.playAnimation("daiji_1", 0);
        }

        this.startTween();
    }

    /**
     * 建议方法名：clickListener
     * 点击事件监听器，根据不同的按钮执行不同的逻辑
     * @param e 点击事件
     */
    _clickListener(e: cc.Button) {
        if (e === this.auto_ui.btn_openBtn) {
            this.handleClick();
        }
    }

    /**
     * 建议方法名：startTween
     * 启动礼盒动画
     */
    startTween() {
        const btnOpenNode = this.auto_ui.btn_openBtn.node;
        const boxNode = this.auto_ui.node_boxNode;
        const titleNode = this.auto_ui.node_titileNode;
        const lightNode = this.auto_ui.node_lightNode;

        btnOpenNode.active = false;
        boxNode.stopAllActions();
        titleNode.stopAllActions();
        titleNode.scaleX = 0;
        lightNode.stopAllActions();
        lightNode.scale = 0;
        boxNode.y = 1000;

        const boxNodeAnimation = cc.sequence(
            cc.moveTo(0.35, 0, 0),
            cc.scaleTo(0.05, 1, 0.8),
            cc.scaleTo(0.05, 1, 1),
            cc.callFunc(() => {
                lightNode.runAction(
                    cc.sequence(
                        cc.scaleTo(0.25, 1.1, 1.1),
                        cc.scaleTo(0.05, 1, 1),
                        cc.callFunc(() => {
                            lightNode.runAction(cc.repeatForever(cc.rotateBy(3, 360)));
                            btnOpenNode.active = true;
                        })
                    )
                );
                titleNode.runAction(cc.scaleTo(0.25, 1, 1));
            })
        );

        boxNode.runAction(boxNodeAnimation);
    }

    /**
     * 建议方法名：handleClick
     * 处理点击事件，当礼盒被点击时播放相关动画和执行回调
     */
    handleClick() {
        const btnOpenNode = this.auto_ui.btn_openBtn.node;
        const lightNode = this.auto_ui.node_lightNode;

        btnOpenNode.active = false;
        AudioMgr.playSoundEffect("sound/openBox", false, BundleNames.Home);

        if (this.boxType === 0) {
            this.auto_ui.dbAnim_box1.playAnimation("kai", 0);
        } else {
            this.auto_ui.dbAnim_box2.playAnimation("kai", 0);
        }

        this.scheduleOnce(() => {
            lightNode.stopAllActions();
            if (this.clickCallBack) {
                this.clickCallBack();
            }
            this._close();
        }, 1.1);
    }
}

export default ViewOpenBox;